// 联合类型
let name: string | undefined;

if (typeof name === "string") {
  name = name.toLowerCase();
}

// void: 通常用于函数返回值，表示该函数没有返回
function printMenu(): void {
  console.log("1. 登录");
  console.log("1. 退出");
}

// never: 通常用于约束函数的返回值，表示该函数永远不可能结束
function throwError(msg: string): never {
  throw new Error(msg);
}

function alwaysDoSomething(): never {
  while (true) {}
}

// 字面量类型
let a: "A";
a = "A";

let user: {
  name: string;
  age: number;
};

user = {
  name: "ac",
  age: 12,
};

// 元组类型：一个固定长度的数组，并且数组中每一项类型确定
let tu: [string, number];
tu = ["name", 12];

// any类型：any类型可以绕过类型检查，因此，any类型的数据可以赋值给任意类型
let aa: any = "1";
let c: number = aa;

export {};
